package com.example.myunisdkdemo;

import android.content.Context;
import android.os.Handler;
import android.util.Log;

import com.example.myunisdkdemo.util.DownloadUtil;

import java.io.File;

import io.dcloud.feature.sdk.DCUniMPSDK;
import io.dcloud.feature.unimp.config.UniMPReleaseConfiguration;

/**
 * MPManager 类用于处理小程序的下载及启动。
 */
public class MPManager {
    private Context context;

    /**
     * 构造函数
     *
     * @param context 调用上下文
     */
    public MPManager(Context context) {
        this.context = context;
    }

    /**
     * 启动本地 WGT。
     */
    public void startLocalWGT(String APPID) {
        openWGT(APPID);
    }

    /**
     * 启动远程 WGT。
     *
     * @param wgtUrl  远程 WGT 的 URL 地址
     * @param wgtName WGT 文件名
     * @param APPID   WGT APPID
     */
    public void startRemoteWGT(String wgtUrl, String wgtName, String APPID) {
        String downFilePath = String.valueOf(context.getFilesDir());
        Handler uiHandler = new Handler();

        DownloadUtil.get().download(context, wgtUrl, downFilePath, wgtName, new DownloadUtil.OnDownloadListener() {
            @Override
            public void onDownloadSuccess(File file) {
                UniMPReleaseConfiguration configuration = new UniMPReleaseConfiguration();
                configuration.wgtPath = file.getPath(); // 设置 WGT 路径
                configuration.password = "789456123"; // 设置 WGT 密码

                uiHandler.post(() -> {
                    DCUniMPSDK.getInstance().releaseWgtToRunPath(APPID, configuration, (code, pArgs) -> {
                        if (code == 1) {
                            try {
                                openWGT(APPID); // 打开下载的 WGT
                            } catch (Exception e) {
                                throw new RuntimeException(e);
                            }
                        } else {
                            Log.e("MPManager", "释放 WGT 失败"); // 释放失败日志
                        }
                    });
                });
            }

            @Override
            public void onDownloading(int progress) {
                // 这里可以处理下载进度逻辑
            }

            @Override
            public void onDownloadFailed() {
                Log.e("MPManager", "下载失败"); // 下载失败日志
            }
        });
    }

    /**
     * 打开指定的 WGT 文件。
     *
     * @param APPID WGT 的 APPID
     */
    private void openWGT(String APPID) {
        try {
            DCUniMPSDK.getInstance().openUniMP(context, APPID); // 打开小程序
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}